﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace HCMUS_SearchService_Group2
{
    /////////////////////////////////////////////////
    /// \brief Lớp Từ Khóa Quận Huyện DAO 
    /// \author Dương Văn Phong -   0912334.
    /// \details <h3>Cung cấp hàm Lấy danh sách từ khóa Quận Huyện với chuỗi tương ứng</h3>
    ////////////////////////////////////////////////
    public class DistrictKeyDAO : KeyWordDAO, IKeyWordObjectDAO
    {
        /////////////////////////////////////////////////
        /// \brief Lấy DS DistrictKeyDTO
        /// \param[in] Không.
        /// \returns  List<DistrictKeyDTO>.
        /// \details <h3>Trả về danh sách tất cả các DistrictKeyDTO trong Database.</h3>
        /////////////////////////////////////////////////
        public static List<DistrictKeyDTO> GetAllDTOKeyWord()
        {
            List<DistrictKeyDTO> lstDistrictKey = new List<DistrictKeyDTO>();
            var lstResultKey = from data in DataConnectionHelper.Context.TUKHOAQUANHUYENs
                               select data;
            foreach (var obj in lstResultKey)
            {
                DistrictKeyDTO temp = new DistrictKeyDTO();
                if (null != obj.MaQuanHuyen)
                    temp.DistrictID = (int)obj.MaQuanHuyen;
                temp.DistrictKeyID = obj.MaTuKhoaQuanHuyen;
                temp.DistrictKeyWord = obj.TuKhoaQuanHuyen1;
                lstDistrictKey.Add(temp);
            }

            return lstDistrictKey;
        }

        /////////////////////////////////////////////////
        /// \brief Hàm Lấy danh sách từ khóa Quận Huyện với chuỗi tương ứng
        /// \param[in] string
        /// \param[out] Không
        /// \returns List<KeyWordDTO>
        /// \details <h3>Các bước thực hiện:</h3>
        /////////////////////////////////////////////////
        public List<KeyWordDTO> Search(string strInput)
        {
            /// - Bước 1: Khởi tạo danh sách dữ liệu
            List<DistrictKeyDTO> listTuKhoaQuanHuyen = new List<DistrictKeyDTO>();
            List<KeyWordDTO> listTuKhoaQuanHuyenDTO = new List<KeyWordDTO>();

            if (null != strInput)
            {
                strInput = strInput.Replace(@"'", @"''");

                /// - Bước 2: Truy Vấn dữ liệu
                listTuKhoaQuanHuyen = (from emp in SearchHelper.DistrictKeys
                                       where strInput.IndexOf(emp.DistrictKeyWord) != -1
                                       select emp).ToList();

                /// - Bước 3: Chuyển đổi về kiểu dữ liệu tương ứng
                foreach (var tuKhoaQuanHuyen in listTuKhoaQuanHuyen)
                {
                    /* DistrictKeyDTO districtKey = new DistrictKeyDTO();
                     districtKey.DistrictKeyID = Convert.ToInt32(tuKhoaQuanHuyen.MaTuKhoaQuanHuyen);
                     districtKey.DistrictID = Convert.ToInt32(tuKhoaQuanHuyen.MaQuanHuyen);
                     districtKey.DistrictKeyWord = tuKhoaQuanHuyen.TuKhoaQuanHuyen1;*/
                    listTuKhoaQuanHuyenDTO.Add(tuKhoaQuanHuyen);
                }
            }

            /// - Bước 4: return Kết quả
            return listTuKhoaQuanHuyenDTO;
        }
    }
}
